<?php
/**
* Classe de persistência
* @package Sistema
* @subpackage Lançamento
*/
class PLancamento extends persistentePadraoPG{
       protected function gerarSqlPorConta($arParametros){
                $select = $where = $order = null;
                $select = "
                select
                        *
                from
                        lancamento";
                $where = array();
                if(isset($arParametros['idConta'])){
                        $where[] = " lanc_cont_id = {$arParametros['idConta']}";
                }
                switch (true){
                        case (isset($arParametros['dataFinal']) && $arParametros['dataFinal'] && isset($arParametros['dataInicial']) && $arParametros['dataInicial']):
                                $where[]= " lanc_data between '{$arParametros['dataInicial']->pegarData('Y-m-d')}' and '{$arParametros['dataFinal']->pegarData('Y-m-d')}'";
                        break;
                        case isset($arParametros['dataInicial']) && $arParametros['dataInicial']:
                                $where[]= " lanc_data >= '{$arParametros['dataInicial']->pegarData('Y-m-d')}'";
                        break;
                        case isset($arParametros['dataFinal']) && $arParametros['dataFinal']:
                                $where[]= " lanc_data >= '{$arParametros['dataFinal']->pegarData('Y-m-d')}'";
                        break;
                }
                $order = " order by lanc_data ";
                return $select.' where '.  implode(' and ', $where).$order;
        }
        public function lerPorConta(pagina $pagina, $arParametros){
                return $this->lerPaginado($pagina, $this->gerarSqlPorConta($arParametros));
        }
        public function lerMovimentoPorConta($arParametros){
                $sql = $this->gerarSqlPorConta($arParametros);
                $sql = "
                select
                        sum(debito) as debito,
                        sum(credito) as credito
                from (select
                                CASE WHEN lanc_tipo = 'D' THEN lanc_valor else 0 end as debito,
                                CASE WHEN lanc_tipo = 'C' THEN lanc_valor else 0 end as credito
                        from
                                ({$sql}) as lancamento) as movimento
                ";
                $res = $this->pegarSelecao($sql);
                if(count($res)){
                        $resultado['debito'] = new TMoeda($res[0]['debito']*1);
                        $resultado['credito'] = new TMoeda($res[0]['credito']*1);
                        $resultado['total'] = new TMoeda($res[0]['credito'] - $res[0]['debito']);
                }else{
                        $resultado['debito'] = new TMoeda(0);
                        $resultado['credito'] = new TMoeda(0);
                        $resultado['total'] = new TMoeda(0);
                }
                return $resultado;
        }

}
?>